package com.es.poem.es;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.*;

/**
 * 配置对象对应的索引属性实体类
 *
 **/


//定义索引名称,作用：即把PeopleRepository对象映射成es中一条json格式文档
//注：es开始时不能存在people这个索引，不然报异常
@Document(indexName = "people",shards = 5,replicas = 1)
@Setting(settingPath = "/json/people/people_settings.json") //可自定义配置项 ，相当es的_setttings
@Mapping(mappingPath = "/json/people/people_mapping.json") //可自定义配置mapping，相当于es 的mappings
@Data
@AllArgsConstructor
@NoArgsConstructor
public class People {

    @Id //相当于es的文档中_id,一一对应
    private String id;

    /**
     * analyzer不指定的话，默认是使用Standard Analyzer分词器
     *  默认分词器，按词切分，小写处理,只对text类型有效，其余类型无效，中文会被拆分成单个词，英文被拆成单个单纯
     *   例：我爱中国I love China ：被拆成：我、爱、中、国、i、love、china
     *
     *   ik_max_word:这个是中文插件：有两种：
     *   ik_max_word :会将文本做最细粒度拆分，极可能多拆分词语
     *   ik_smart: 会做最粗粒度拆分，已被分出的词语将不会再次被其他词语占有
     **/
    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String name;

    @Field(type = FieldType.Integer)
    private Integer age;


    @Field(type = FieldType.Long) // 指定存储格式
    private Long bir;

    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String content;

    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String address;

}
